Notifications
Clear all

Abrir janela de consulta

28 Posts
2 Usuários
0 Reactions
4,585 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite, amiguinhos do Excel!

Existe alguma forma de colocar um código de VBA q, ao dar um atalho (digamos, Ctrl E), abrisse uma janela com uma fórmula q eu fiz pra puxar um PROCV?

Segue o arquivo c/ a janelinha q eu gostaria q abrisse.

Só mais um detalhe: a janelinha aberta, mesmo q fosse aberta em outra aba da planilha, teria q puxar o PROCV do mesmo lugar.

Abraço

 
Postado : 29/03/2012 9:37 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Alexandre, eu não acho que existam ideias melhores ou piores, mas sim, maneiras diferentes de se lidar com a programação, e isto, é uma das coisas que mais me apaixonam no VBA, qualquer questão pode ser resolvida e varias maneiras diferentes.

A sua maneira de lidar com a questão foi ótima, então se me permite, só para implementar a questão de abrir em qq aba atravez do atalho e obtermos o resultado, é definirmos a WorkSheet :

Então para não ter de anexar novamente o arquivo, seguem as rotinas com a implementação, é só trocar.

Primeiro, na Declaração do Formulario, vejam bem qdo falo declaração não é dentro de nenhuma rotina e sim fora, no escopo.
Adicione:
Dim wsEstoque As Worksheet

Depois substituam as demais rotinas pelas a abaixo :

Private Sub LojaCombo_Change()
    
    MyRow = Me.LojaCombo.ListIndex + 3
    
    Me.MarcaCombo.Value = wsEstoque.Range("A" + CStr(MyRow)).Text
    Me.NameTextBox.Value = wsEstoque.Range("C" + CStr(MyRow)).Text
    Me.ValueTextBox.Value = wsEstoque.Range("D" + CStr(MyRow)).Text
    
End Sub
Private Sub MarcaCombo_Change()
    
    MyRow = Me.MarcaCombo.ListIndex + 3
    
    Me.LojaCombo.Value = wsEstoque.Range("B" + CStr(MyRow)).Text
    Me.NameTextBox.Value = wsEstoque.Range("C" + CStr(MyRow)).Text
    Me.ValueTextBox.Value = wsEstoque.Range("D" + CStr(MyRow)).Text
    
End Sub
Private Sub UserForm_Initialize()
    
    'Aqui definimos a Aba que queremos buscar os dados
    Set wsEstoque = Worksheets("Base")
    
    Records = wsEstoque.Range("A1").Value
    
    Me.MarcaCombo.Clear
    Me.LojaCombo.Clear
    
    For MyRow = 3 To (Records + 2)
        Me.MarcaCombo.AddItem wsEstoque.Range("A" + CStr(MyRow)).Text
        Me.LojaCombo.AddItem wsEstoque.Range("B" + CStr(MyRow)).Text
    Next MyRow

End Sub

Para esclarecer a diferença :

Desta forma estamos utilizando a aba que está Ativa :
Me.MarcaCombo.Value = Range("A" + CStr(MyRow)).Text

Aqui nos referimos a Aba wsEstoque, a qual foi definida pelas Instruções :
Dim wsEstoque As Worksheet, e
Set wsEstoque = Worksheets("Base")

Me.MarcaCombo.Value = wsEstoque.Range("A" + CStr(MyRow)).Text

Assim independente da aba que estivermos, os dados serão buscados sempre na aba "Base".

[]s

 
Postado : 01/04/2012 11:07 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!!

Erico, faça o DownLoad novamente, eu atualizei o anexo. e depois agradeça o Mauro!!

Muito Obrigado!!! Mauro!! ;)

 
Postado : 01/04/2012 11:19 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Valeu, gente! Mas ainda tô c/ um problema:
Sou uma anta em VBA - só sei pegar o q os outros fazem, ler um cado os códigos e tentar modificar comparando o original c/ o q eu preciso de acordo c/ as minhas necessidades.

Consegui copiar a form e fazer ela abrir em todas as plans já, mas não tô tendo o retorno do resultado qd eu digito os códigos.

A modificação q eu fiz foi a seguinte:

iLin = 2 'Linha 2
sCol = 2 'Coluna 1
sColLj = 3 'Coluna 2 - Cod Loja
sColPrc = 7 'Coluna 3 - Preço
sColEstoq = 13 'Coluna 4 - Estoque

Equiparando c/ as colunas onde aparecem esses dados na minha planilha.

Alguém saberia me dizer pq não retorna os dados na janela?

Valeu!

 
Postado : 01/04/2012 6:09 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não ligo muito para agradecimentos, ajudo mais porque gosto, mas de qualquer forma "Agradeço" a todos que me agradecem, kkkkkkkk - ficou bem esquesito.

Deixando a descontração de lado, apesar de achar que o exemplo do Alexandre é bem mais simples, refiz o meu modelo anterior, adicionando as opções pelas pesquisas, é mais uma forma para analizarem como esta function pode ser bem aproveitada em diversas situações, podemos tambem alterar para combos e utilizar o evento Change, mas dai teremos de bloquear o combo para digitação, senão a rotina é chamada logo no primeiro caracter digitado.

[]s

 
Postado : 01/04/2012 6:11 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Enrico, pelo que postou está utilizando a Function, então se copiou e colou em seu modelo, arrisco o palpite que é devido ao nome da aba "Estoque"

Na rotina que postei está :
Set wsEstoque = Worksheets("Estoque")

Então precisa alterar para o nome da aba correta (conforme o modelo q vc anexou, esta é a correta):
Set wsEstoque = Worksheets("Controle de Estoque")

[]s

 
Postado : 01/04/2012 6:18 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!

Erico, tentou o modelo que eu atualizei,depois da melhoria que o Mauro apontou?

Talvez seja um pouco mais fácil adaptar.

Att

 
Postado : 01/04/2012 6:34 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

O pior é q eu já tinha mudado o nome da minha aba pra "Estoque" pra bater c/ o código. Mas não tá funfando... =(

 
Postado : 01/04/2012 6:40 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!
Você é engraçado "Mas não tá funfando" :lol:
Mande seu arquivo original, que adaptamos!

Att

 
Postado : 01/04/2012 6:43 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

O pior é q eu já tinha mudado o nome da minha aba pra "Estoque" pra bater c/ o código. Mas não tá funfando... =(

O jeito é você verificar todas as referencias, alguma delas pode estar com erro de digitação.

 
Postado : 01/04/2012 6:44 pm
(@arthurdiegoo)
Posts: 99
Estimable Member
 

Sei que não é pertinente a duvida do colega mais alexandre, agora eu ri demais aqui...

Também sou de BH e curiosamente também falo funfando, to imaginando como deve ser engraçado pra quem está de fora...

Quanto à dúvida do colega, creio eu que você pode ter esquecido de mudar o nome de Estoque para alguma referência...

Tenta abrir o exemplo novamente, e usar o Localizar e substituir do próprio vba para trocar os valores... isso evita trocar dados em lugares errados.

 
Postado : 01/04/2012 7:49 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Descobri onde tava o erro. Percebi q existia um código cabuloso pra funfar a caixa.

Obrigado pela ajuda e abraço a todos!

 
Postado : 01/04/2012 10:16 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!!

Parabéns, obrigado pelo retorno, precisando estamos aê.. ;)

 
Postado : 02/04/2012 4:47 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite Senhores...
Muito interessante.... :D

abraços...

 
Postado : 15/04/2012 8:12 pm
Página 2 / 2